/*
    接口的基础语法：
        1、类和类之间叫做继承，类和接口之间叫做实现，仍可将实现看作继承，implements实现
        2、！！！！当一个非抽象类实现接口的话，必须将接口中所有的抽象方法全部实现（重写、覆盖）
        3、接口可以和多态联合使用，参照类的继承多态语法
        4、一个类可以同时实现多个接口
            弥补了java类与类之间只能单继承

        5、继承和实现都存在的话，代码怎么写？
        extends在前，implements在后
        例：class Cat extends Animals implements Flyable{}

 */

public class InterfaceTest02 {
    public static void main(String[] args) {
        A a = new D();
        B b = new D();
        C c = new D();

        //a.m2;  编译错误，a里面没有m2方法，改成
        B e = (B)a;  //强行转型，虽然A和B之间不存在继承关系，但是代码测试的时候发现可以互转，这种转型需要注意：编译没问题，但是运行可能会出现ClassCastException
        e.m2();
    }
}

interface A{
    void m1();
}

interface B{
    void m2();
}

interface C{
    void m3();
}

class D implements A,B,C{

    public void m1() {
    }

    public void m2() {
        System.out.println("我爱文梦甜");
    }

    public void m3() {
    }
}
